package com.andy.wan.android.mvp.api;

import com.andy.wan.android.mvp.bean.ArticleBean;
import com.andy.wan.android.mvp.bean.BannerBean;
import com.andy.wan.android.mvp.bean.BaseResponse;
import com.andy.wan.android.mvp.bean.FeedArticleListData;
import com.andy.wan.android.mvp.bean.FriendBean;
import com.andy.wan.android.mvp.bean.KnowledgeHierarchyData;
import com.andy.wan.android.mvp.bean.LoginBean;
import com.andy.wan.android.mvp.bean.NavigationListData;
import com.andy.wan.android.mvp.bean.PageBean;
import com.andy.wan.android.mvp.bean.ProjectClassifyData;
import com.andy.wan.android.mvp.bean.VoidBean;
import com.andy.wan.android.mvp.bean.WxAuthor;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

/**
 * @Author: luofan
 * @CreateDate: 2020/3/17 16:04
 * @Description:
 */
public interface WanAndroidApi {

    String BASE_URL = "https://www.wanandroid.com/";

    /**
     * 登录
     */
    @POST("user/login")
    Observable<BaseResponse<LoginBean>> login(@QueryMap Map<String, String> param);

    /**
     * 注册
     */
    @POST("user/register")
    Observable<BaseResponse<VoidBean>> register(@QueryMap Map<String, String> param);

    /**
     * 退出
     */
    @GET("user/logout/json")
    Observable<BaseResponse<VoidBean>> logout();

    /**
     * 首页banner
     */
    @GET("banner/json")
    Observable<BaseResponse<List<BannerBean>>> banner();

    /**
     * 常用网站
     */
    @GET("friend/json")
    Observable<BaseResponse<List<FriendBean>>> friend();

    /**
     * 首页文章列表
     */
    @GET("article/list/{page}/json")
    Observable<BaseResponse<PageBean<ArticleBean>>> articleList(@Path("page") int pageNum);

    /**
     * 项目分类
     * http://www.wanandroid.com/project/tree/json
     *
     * @return 导航数据
     */
    @GET("project/tree/json")
    Observable<BaseResponse<List<ProjectClassifyData>>> getProjectClassifyData();

    /**
     * 项目类别数据
     * http://www.wanandroid.com/project/list/1/json?cid=294
     *
     * @param pageNum page num
     * @param cid     second page id
     * @return 项目分类数据
     */
    @GET("project/list/{page}/json")
    Observable<BaseResponse<FeedArticleListData>> getProjectListData(@Path("page") int pageNum, @Query("cid") int cid);

    /**
     * 体系结构
     */
    @GET("tree/json")
    Observable<BaseResponse<List<KnowledgeHierarchyData>>> getKnowledgeHierarchyData();

    /**
     * 知识体系下的文章
     * http://www.wanandroid.com/article/list/0?cid=60
     *
     * @param page page num
     * @param cid  second page id
     * @return 知识体系feed文章数据
     */
    @GET("article/list/{page}/json")
    Observable<BaseResponse<FeedArticleListData>> getKnowledgeHierarchyDetailData(@Path("page") int page, @Query("cid") int cid);

    /**
     * 导航
     * http://www.wanandroid.com/navi/json
     *
     * @return 导航数据
     */
    @GET("navi/json")
    Observable<BaseResponse<List<NavigationListData>>> getNavigationListData();

    /**
     * 获取公众号列表
     * http://wanandroid.com/wxarticle/chapters/json
     *
     * @return 公众号列表数据
     */
    @GET("wxarticle/chapters/json")
    Observable<BaseResponse<List<WxAuthor>>> getWxAuthorListData();

    /**
     * 获取当前公众号某页的数据
     * http://wanandroid.com/wxarticle/list/405/1/json
     *
     * @param id
     * @param page
     * @return 获取当前公众号某页的数据
     */
    @GET("wxarticle/list/{id}/{page}/json")
    Observable<BaseResponse<FeedArticleListData>> getWxSumData(@Path("page") int page, @Path("id") int id);

    /**
     * 获取当前公众号某页的数据
     * https://www.wanandroid.com/lg/collect/list/0/json
     *
     * @param page
     * @return 获取收藏数据
     */
    @GET("lg/collect/list/{page}/json")
    Observable<BaseResponse<FeedArticleListData>> getLikeFillData(@Path("page") int page);

}
